package org.huawei260.TiKu.ODsuanfa;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;

/**
 * @Author: qingle
 * @Date: 2024/10/28-16:11
 * @Description: 2544 【模拟】2024E水仙花数
 *
 * 所谓水仙花数，是指一个n位的正整数，其各位数字的n次方和等于该数本身。
 * 例如153是水仙花数，153是一个3位数，并且153=1^3+5^3+3^3。
 * 输入格式
 * 第一行输入一个整数n，表示一个n位的正整数。n在3到7之间，包含3和7。
 * 第二行输入一个整数m，表示需要返回第m个水仙花数。
 * 输出格式
 * 返回长度是n的第m个水仙花数。个数从0开始编号。
 * 若m大于水仙花数的个数，返回最后一个水仙花数和m的乘积。
 * 若输入不合法，返回-1。
 * 输入样例    复制
 * 3
 * 0
 * 输出样例    复制
 * 153
 * @version: 1.0
 */

public class E_2024E_2544__模拟水仙花数_answer2 {

////	public class Main {
//import java.util.Scanner;

//	public class Main {
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
			int n = sc.nextInt();
			int m = sc.nextInt();

			long[] powers = new long[10];
			for (int i = 0; i < 10; i++) {
				powers[i] = (long)Math.pow(i, n); // 使用long类型存储幂的结果
			}

			if (n < 3 || n > 7) {
				System.out.println("-1");
				return;
			}

			if (m < 0) {
				System.out.println("-1");
				return;
			}

			// n位数的水仙花数个数，如n为3 表示从100道1000之间，有153个水仙花数
			int start = (int) Math.pow(10, n - 1);
			int end = (int) Math.pow(10, n);

			//结果列表用ArrayList 存储
			List<Integer> narcissusList = new ArrayList<>();
//			if(m >= narcissusList.size()) {
//				System.out.println("-1");
//				return;
//			}

			for (long i = start; i < end; i++) {
				long temp = i;
				long sum = 0;
				while (temp > 0) {
					int digit = (int)(temp % 10);
					sum += powers[digit]; // 直接使用预先计算好的n次幂结果
					temp /= 10;
				}

				if (sum == i) {
					narcissusList.add((int)i);
//					System.out.println(i);
				}
			}
			System.out.println(narcissusList.get(m));
		}
	}